#include <algorithm>
#include <iostream>
#include <string>
class Solution {
 public:
  int longestSubstring(std::string s, int k) {
    int n = s.size();
    if (k < 2) return n;
    if (n < k) return 0;
    int m[26] = {0};
    for (auto c : s) ++m[c - 'a'];
    int i = 0;
    while (i < n && m[s[i] - 'a'] >= k) ++i;
    if (i == n) return n;
    int left = longestSubstring(s.substr(0, i), k);
    while (i < n && m[s[i] - 'a'] < k) ++i;
    // int right = longestSubstring(s.substr(i), k);  // 默认值：0，末尾
    int right = longestSubstring(s.substr(i, s.size() - i), k);
    return std::max(left, right);
  }
};
